package com.project.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.Table;
import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author 
 */
@Data
@ApiModel(value = "回收订单")
@TableName(value = "cms_recovery_order")
@Table(name = "cms_recovery_order", comment = "回收订单")
public class CmsRecoveryOrder implements Serializable {
    /**
     * 回收订单ID
     */
    @TableId
    @ApiModelProperty(value = "回收订单ID")
    @Column(type= MySqlTypeConstant.BIGINT, comment = "回收订单ID", length = 11, isKey = true, isAutoIncrement = true,isNull = false)
    private Long recoveryOrderId;

    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID")
    @Column(comment = "用户ID")
    private Long userId;

    /**
     * 接单回收员ID
     */
    @ApiModelProperty(value = "接单回收员ID")
    @Column(comment = "接单回收员ID")
    private Long recoveryMemberId;

    /**
     * 接单用户ID
     */
    @ApiModelProperty(value = "接单用户ID")
    @Column(comment = "接单用户ID")
    private Long memberUserId;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    @Column(comment = "订单号")
    private String orderNumber;

    /**
     * 下单总数
     */
    @ApiModelProperty(value = "下单总数")
    @Column(comment = "下单总数")
    private Integer quantity;

    /**
     * 预估金额
     */
    @ApiModelProperty(value = "预估金额")
    @Column(comment = "预估金额", defaultValue = "0.00", type = MySqlTypeConstant.DECIMAL, length = 18, decimalLength = 2)
    private BigDecimal estimateAmount;

    /**
     * 实际金额
     */
    @ApiModelProperty(value = "实际金额")
    @Column(comment = "实际金额", defaultValue = "0.00", type = MySqlTypeConstant.DECIMAL, length = 18, decimalLength = 2)
    private BigDecimal realAmount;

    /**
     * 联系人
     */
    @ApiModelProperty(value = "联系人")
    @Column(comment = "联系人")
    private String receiveName;

    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式")
    @Column(comment = "联系方式")
    private String receiveMobile;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    @Column(comment = "地址")
    private String receiveAddress;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    @Column(comment = "经度", type = MySqlTypeConstant.DOUBLE, length = 10, decimalLength = 6)
    private Double longitude;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    @Column(comment = "纬度", type = MySqlTypeConstant.DOUBLE, length = 10, decimalLength = 6)
    private Double latitude;

    /**
     * 上门时间开始
     */
    @ApiModelProperty(value = "上门时间开始")
    @Column(comment = "上门时间开始", type = MySqlTypeConstant.DATETIME)
    private Date visitingStartTime;

    /**
     * 上门时间结束
     */
    @ApiModelProperty(value = "上门时间结束")
    @Column(comment = "上门时间结束", type = MySqlTypeConstant.DATETIME)
    private Date visitingEndTime;

    /**
     * 下单时间
     */
    @ApiModelProperty(value = "下单时间")
    @Column(comment = "下单时间", type = MySqlTypeConstant.DATETIME)
    private Date createTime;

    /**
     * 最晚接单时间
     */
    @ApiModelProperty(value = "最晚接单时间")
    @Column(comment = "最晚接单时间", type = MySqlTypeConstant.DATETIME)
    private Date lastReceivingTime;

    /**
     * 接单时间
     */
    @ApiModelProperty(value = "接单时间")
    @Column(comment = "接单时间", type = MySqlTypeConstant.DATETIME)
    private Date receivingTime;

    /**
     * 取消时间
     */
    @ApiModelProperty(value = "取消时间")
    @Column(comment = "取消时间", type = MySqlTypeConstant.DATETIME)
    private Date cancelTime;

    /**
     * 最晚可取消时间
     */
    @ApiModelProperty(value = "最晚可取消时间")
    @Column(comment = "最晚可取消时间", type = MySqlTypeConstant.DATETIME)
    private Date lastCancelTime;

    /**
     * 完成时间
     */
    @ApiModelProperty(value = "完成时间")
    @Column(comment = "完成时间", type = MySqlTypeConstant.DATETIME)
    private Date completeTime;

    /**
     * 取消原因
     */
    @ApiModelProperty(value = "取消原因")
    @Column(comment = "取消原因")
    private String cancelReason;

    /**
     * 取消订单类型（1:用户取消,2:系统取消）
     */
    @ApiModelProperty(value = "取消订单类型（1:用户取消,2:系统取消）")
    @Column(comment = "消订单类型（1:用户取消,2:系统取消")
    private Integer cancelType;

    /**
     * 状态（1:待接单,2:已接单,3:已完成,4:已取消）
     */
    @ApiModelProperty(value = "状态（1:待接单,2:已接单,3:已完成,4:已取消）")
    @Column(comment = "状态（1:待接单,2:已接单,3:已完成,4:已取消）", defaultValue = "1")
    private Integer state;

    /**
     * 评论状态（1:待评论,2:已评论）
     */
    @ApiModelProperty(value = "评论状态（1:待评论,2:已评论）")
    @Column(comment = "评论状态（1:待评论,2:已评论）", defaultValue = "1")
    private Integer commentState;

    /**
     * 删除标志（-1:删除,1:正常）
     */
    @ApiModelProperty(value = "删除标志（-1:删除,1:正常）")
     @Column(comment = "删除标志（-1:删除,1:正常）", defaultValue = "1")
    private Integer status;

    private static final long serialVersionUID = 1L;

}